package com.niiwoo.civet.account.service.trade;

import com.niiwoo.civet.account.dto.request.ReceivedRepaymentSuccessAccountingRequestDTO;
import com.niiwoo.civet.account.dto.request.TransFreezeRequestDTO;
import com.niiwoo.civet.account.dto.request.TransUnfreezeRequestDTO;
import com.niiwoo.civet.account.dto.response.OrderSuccessAccountingResponseDTO;
import com.niiwoo.civet.account.dto.response.TransFreezeResponseDTO;
import com.niiwoo.civet.account.dto.response.TransUnfreezeResponseDTO;
import com.niiwoo.civet.account.enums.OrderTypeEnum;

/**
 * 交易中心相关交易业务DUBBO服务类
 * Created by wangjichao on 2018/4/19.
 */
public interface TransOrderDubboService {

    /**
     * 还款/垫付交易冻结接口
     */
    default TransFreezeResponseDTO refundFreeze(TransFreezeRequestDTO requestDTO){
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 通用交易解冻接口
     */
    default TransUnfreezeResponseDTO transUnfreeze(TransUnfreezeRequestDTO requestDTO){
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 交易冻结查询
     */
    default TransFreezeResponseDTO queryTransFreeze(Long orderId,OrderTypeEnum orderType){
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 回款成功记账
     * @param requestDTO
     * @return
     */
    default OrderSuccessAccountingResponseDTO receivedRepaymentSuccessAccounting(ReceivedRepaymentSuccessAccountingRequestDTO requestDTO){
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 还款/垫付成功记账
     * @param freezeRequestNo
     * @return
     */
    default OrderSuccessAccountingResponseDTO repaymentSuccessAccounting(String freezeRequestNo){
        throw new UnsupportedOperationException("unimplemented");
    }


    /**
     * 交易冻结补单JOB
     */
    default void transFreezeResultCheckJob(){
        throw new UnsupportedOperationException("unimplemented");
    }

    /**
     * 交易解冻补单JOB
     */
    default void transUnfreezeResultCheckJob(){
        throw new UnsupportedOperationException("unimplemented");
    }

}
